package com.xishu.bo.pay;

import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * 异步通知消息
 *
 * 1、 只有支付或退款成功时钱方API才会發出異步通知。
 *
 * 2、 异步通知地址，由钱方技术支持人员进行配置，每套code、key只能配置一条异步通知地址，可修改。
 *
 * 3、 服务器通知回写：商户在接收到钱方的服务器通知后，必须回傳狀態200 OK 和 SUCCESS的字符串，钱方如果收到“SUCCESS”，便认为贵公司已收到異步通知；如果钱方收到商户的应答不是纯字符串SUCCESS返回或沒有收到返回时，平台會认为通知失败，那么钱方会以以下的策略再次发送异步通知，时间间隔是2m、10m(第一次)、10m(第二次)、60m、2h、6h、15h，期间任何一次收到SUCCESS，都将不继续后续的通知。通知时间和频率随时会调整，作为补偿机制，请不要依赖此通知。
 *
 * 4、 请商户在签名校验通过后,务必对订单金额，订单号，商户订单号，等其他关键信息做一致性校验，以保证关键参数未被篡改。若不能确认，请使用“单笔订单查询接口”配合确认。
 *
 * 5、 通知参数获取：调用方式：POST；content-type：application/json。
 *
 * 6、 商户在收到异步通知后，要对订单号进行重复校验，避免因为同一笔订单的多次通知而发生多次发货，钱方不对同一笔订单的多次通知而导致的多次发货承担责任。
 *
 * 7、 异步通知有可能由于外部因素造成延迟，因此我們建议异步通知与查询接口同時配合使用來確認訂單狀態。由于安全原因，异步通知仅支持80和443端口，不支持自定义指定端口。
 *
 * 8、通知内容是json格式的字符串，其本质是字符串，进行验签时，只需要在字符串末尾拼接key，通过md5算法加密，即可生成验签字段。先验签，再解析。
 *
 *
 *
 *
 */
public class QfResponse implements Serializable {
    private static final long serialVersionUID = -5309838429492479606L;

    @ApiModelProperty(value = "通知类型,Payment—支付 Refund—退款")
    private String notify_type;

    @ApiModelProperty(value = "交易流水号")
    private String syssn;

    @ApiModelProperty(value = "外部订单号, 开发者定义订单号")
    private String out_trade_no;

    @ApiModelProperty(value = "支付类型, pay_type 參數請參 Code instructions 頁面 (注意: 支付寶香港線上掃碼 (801501) 的pay_type在異步通知會顯示成801514)")
    private String pay_type;

    @ApiModelProperty(value = "请求交易时间")
    private String txdtm;

    @ApiModelProperty(value = "订单支付金额")
    private Integer txamt;

    @ApiModelProperty(value = "交易返回码")
    private String respcd;

    @ApiModelProperty(value = "系统交易时间")
    private String sysdtm;

    @ApiModelProperty(value = "用户支付时间")
    private String paydtm;

    @ApiModelProperty(value = "撤销/退款标记,正常交易—0 已撤销—2 已退款—3")
    private String cancel;

    @ApiModelProperty(value = "用户ID 参数, 只適用於微信、支付宝交易")
    private String cardcd;

    @ApiModelProperty(value = "商品名称或标示")
    private String goods_name;

    @ApiModelProperty(value = "交易状态码, 1：支付成功")
    private String status;

    @ApiModelProperty(value = "币种")
    private String txcurrcd;

    @ApiModelProperty(value = "子商户号")
    private String mchid;

    @ApiModelProperty(value = "通道编号")
    private String chnlsn;

    @ApiModelProperty(value = "汇率")
    private String exchange_rate;

    @ApiModelProperty(value = "消费金额,账户实际支出金额，交易金额-优惠金额=支出金额")
    private Integer cash_fee;

    @ApiModelProperty(value = "消费币种")
    private String cash_fee_type;

    @ApiModelProperty(value = "通道订单号")
    private String chnlsn2;


    public String getNotify_type() {
        return notify_type;
    }

    public void setNotify_type(String notify_type) {
        this.notify_type = notify_type;
    }

    public String getSyssn() {
        return syssn;
    }

    public void setSyssn(String syssn) {
        this.syssn = syssn;
    }

    public String getOut_trade_no() {
        return out_trade_no;
    }

    public void setOut_trade_no(String out_trade_no) {
        this.out_trade_no = out_trade_no;
    }

    public String getPay_type() {
        return pay_type;
    }

    public void setPay_type(String pay_type) {
        this.pay_type = pay_type;
    }

    public String getTxdtm() {
        return txdtm;
    }

    public void setTxdtm(String txdtm) {
        this.txdtm = txdtm;
    }

    public Integer getTxamt() {
        return txamt;
    }

    public void setTxamt(Integer txamt) {
        this.txamt = txamt;
    }

    public String getRespcd() {
        return respcd;
    }

    public void setRespcd(String respcd) {
        this.respcd = respcd;
    }

    public String getSysdtm() {
        return sysdtm;
    }

    public void setSysdtm(String sysdtm) {
        this.sysdtm = sysdtm;
    }

    public String getPaydtm() {
        return paydtm;
    }

    public void setPaydtm(String paydtm) {
        this.paydtm = paydtm;
    }

    public String getCancel() {
        return cancel;
    }

    public void setCancel(String cancel) {
        this.cancel = cancel;
    }

    public String getCardcd() {
        return cardcd;
    }

    public void setCardcd(String cardcd) {
        this.cardcd = cardcd;
    }

    public String getGoods_name() {
        return goods_name;
    }

    public void setGoods_name(String goods_name) {
        this.goods_name = goods_name;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getTxcurrcd() {
        return txcurrcd;
    }

    public void setTxcurrcd(String txcurrcd) {
        this.txcurrcd = txcurrcd;
    }

    public String getMchid() {
        return mchid;
    }

    public void setMchid(String mchid) {
        this.mchid = mchid;
    }

    public String getChnlsn() {
        return chnlsn;
    }

    public void setChnlsn(String chnlsn) {
        this.chnlsn = chnlsn;
    }

    public String getExchange_rate() {
        return exchange_rate;
    }

    public void setExchange_rate(String exchange_rate) {
        this.exchange_rate = exchange_rate;
    }

    public Integer getCash_fee() {
        return cash_fee;
    }

    public void setCash_fee(Integer cash_fee) {
        this.cash_fee = cash_fee;
    }

    public String getCash_fee_type() {
        return cash_fee_type;
    }

    public void setCash_fee_type(String cash_fee_type) {
        this.cash_fee_type = cash_fee_type;
    }

    public String getChnlsn2() {
        return chnlsn2;
    }

    public void setChnlsn2(String chnlsn2) {
        this.chnlsn2 = chnlsn2;
    }
}
